package cn.ruihusoft.ql.client;

import cn.ruihusoft.ql.pojo.ListResponse;
import cn.ruihusoft.ql.pojo.Response;
import cn.ruihusoft.ql.pojo.env.AddEnvRequest;
import cn.ruihusoft.ql.pojo.env.EnvDetailResponse;
import cn.ruihusoft.ql.pojo.env.MoveEnvRequest;
import cn.ruihusoft.ql.pojo.env.NameEnvRequest;
import cn.ruihusoft.ql.pojo.env.UpdateEnvRequest;
import com.dtflys.forest.annotation.Delete;
import com.dtflys.forest.annotation.Get;
import com.dtflys.forest.annotation.JSONBody;
import com.dtflys.forest.annotation.Post;
import com.dtflys.forest.annotation.Put;
import com.dtflys.forest.annotation.Var;

import java.util.List;

public interface EnvClient extends BaseAuthClient {

    /**
     * 获取所有环境变量详情
     *
     * @return
     */
    @Get("/envs")
    ListResponse<EnvDetailResponse> allEnvs();

    /**
     * 添加环境变量
     *
     * @param envs
     * @return
     */
    @Post("/envs")
    ListResponse<EnvDetailResponse> addEnvs(@JSONBody List<AddEnvRequest> envs);

    /**
     * 更新环境变量
     *
     * @param updateEnvRequest
     * @return
     */
    @Put("/envs")
    Response<String> updateEnv(@JSONBody UpdateEnvRequest updateEnvRequest);

    /**
     * 删除环境变量
     *
     * @param envIds
     * @return
     */
    @Delete("/envs")
    Response<String> deleteEnvs(@JSONBody List<Integer> envIds);

    /**
     * 根据ID获取环境变量
     *
     * @param id
     * @return
     */
    @Get("/envs/{id}")
    Response<EnvDetailResponse> getEnv(@Var("id") Integer id);

    /**
     * 移动环境变量
     *
     * @param id
     * @param moveEnvRequest
     * @return
     */
    @Get("/envs/{id}/move")
    Response<EnvDetailResponse> moveEnv(@Var("id") Integer id, @JSONBody MoveEnvRequest moveEnvRequest);

    /**
     * 禁用环境变量
     *
     * @param envIds
     * @return
     */
    @Put("/envs/disable")
    Response<String> disable(@JSONBody List<Integer> envIds);

    /**
     * 启用环境变量
     *
     * @param envIds
     * @return
     */
    @Put("/envs/enable")
    Response<String> enable(@JSONBody List<Integer> envIds);

    /**
     * 重命名环境变量
     *
     * @param nameEnvRequest
     * @return
     */
    @Put("/envs/name")
    Response<String> name(@JSONBody NameEnvRequest nameEnvRequest);

}
